let a: string = "hello world"

console.log(a)

let b: number = 123
console.log(b)

let c: boolean = true
console.log(c)

let d: any = 123
d = "hello world"
console.log(d)

let e: symbol = Symbol()
console.log(e)
console.log(typeof e)

let f: null = null
console.log(f)

let g: undefined = undefined
console.log(g)

let h: void = undefined
console.log(h)

let i: unknown = 123
console.log(i)

let j: object = {}
console.log(j)

let k: Array<number> = [1, 2, 3]
console.log(k)

let l: [string, number] = ["hello", 123]
console.log(l)

let m: { name: string, age: number } = {
    name: "hello",
    age: 123
}
console.log(m)

let n: Map<string, number> = new Map()
n.set("name", 123)
console.log(n)

let o: Set<number> = new Set()
o.add(1)
console.log(o)

interface Person {
    name: string
    age: number
}

let p: Person = {
    name: "hello",
    age: 123
}

console.log(p)

interface Student extends Person {
    score: number
}

let q: Student = {
    name: "hello",
    age: 123,
    score: 100
}
console.log(q)

const v = function <T, K extends keyof T>(
    data: T,

    src: K
): void {
    console.log(data[src])
};
v(q, 'score');


enum Color {
    Red,
    Green,
    Blue
}

console.log(Color.Red)





